package kr.hkit.powerjava.chapter23;

public class ThreadControl {
	static void print(String msg){
		String threadName = Thread.currentThread().getName();
		System.out.format("%s : %s%n", threadName, msg);
	}
	private static class MessageLoop implements Runnable{

		@Override
		public void run() {
			String[] message = {"Pride will have a fall.",
					"Power is dangerous unless you have humility",
					"Office changes manners.",
					"Empty vessls make the most sound."
			};
			for( int i = 0; i <message.length; i ++){
				print(message[i]);
				try {
					Thread.sleep(2000);		//0.5초 1000 = 1초
				} catch (InterruptedException e) {
					print("아직 끝나지 않았음");
					/*e.printStackTrace();*/
				}
			}
		}//end of method run()
		
	}//end of class MessageLoop
	
	public static void main(String[] args) throws InterruptedException {
		int tries = 0; //시도 회수
		
		ThreadControl.print("추가적인 스레드를 시작합니다.");
		Thread t = new Thread(new MessageLoop());
		t.start();
		
		ThreadControl.print("추가적인 스레드를 끝나기를 기다립니다.");
		
	
		while(t.isAlive()){ //t가 살아있느냐
			System.out.println("아직 기다립니다.");
			t.join(1000);		//throws InterruptedException 전가시킴
			tries++;
			if(tries > 2){ //2초 기다렸는데 alive라면
				ThreadControl.print("참을 수 없네요 ");
				t.interrupt();
				t.join();
			}
		}
		
		ThreadControl.print("메인 스레드 종료");
		
	}
}
